/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;


import java.sql.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import persistencia.PersistenciaTarifa;

/**
 * Clase que representa una tarifa para asociarla a un artículo
 * @author JAVA
 */
public class Tarifa {
    private String descripcion;
    private float precioAlquiler;
    private float precioVenta;
    private int diasAlquiler;
    private int id;

    public Tarifa(String descripcion, float precioAlquiler, float precioVenta, int diasAlquiler) {
        this.descripcion = descripcion;
        this.precioAlquiler = precioAlquiler;
        this.precioVenta = precioVenta;
        this.diasAlquiler = diasAlquiler;
    }


    public Tarifa(int id, String descripcion, float precioAlquiler, float precioVenta, int diasAlquiler) {
        this.descripcion = descripcion;
        this.precioAlquiler = precioAlquiler;
        this.precioVenta = precioVenta;
        this.diasAlquiler = diasAlquiler;
        this.id = id;
    }

    public int getId() {
        return id;
    }

    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * @return the precioAlquiler
     */
    public float getPrecioAlquiler() {
        return precioAlquiler;
    }

    /**
     * @param precioAlquiler the precioAlquiler to set
     */
    public void setPrecioAlquiler(float precioAlquiler) {
        this.precioAlquiler = precioAlquiler;
    }

    /**
     * @return the precioVenta
     */
    public float getPrecioVenta() {
        return precioVenta;
    }

    /**
     * @param precioVenta the precioVenta to set
     */
    public void setPrecioVenta(float precioVenta) {
        this.precioVenta = precioVenta;
    }

    /**
     * @return the diasAlquiler
     */
    public int getDiasAlquiler() {
        return diasAlquiler;
    }

    /**
     * @param diasAlquiler the diasAlquiler to set
     */
    public void setDiasAlquiler(int diasAlquiler) {
        this.diasAlquiler = diasAlquiler;
    }
    
       @Override
    public String toString() {
        return "\n --------------------- \n  ---- TARIFA ----  \n --------------------- \n" + "Id: " + id + "\n Descripcion: " + descripcion + "\n Precio Alquiler: " + precioAlquiler + "\n Precio Venta: " + precioVenta + "\n Dias Alquiler: " + diasAlquiler + "\n --------------------- \n";
    }
       
     /**
     * Recibe los datos necesarios, crea una tarifa y la manda a la persistencia
     * @param descripcion de la tarifa
     * @param precio de Alquiler para el articulo asociado
     * @param precio de venta para el articulo asociado
     * @param dias permitidos de alquiler 
     */
    public void addTarifa(Tarifa tarifa1) throws ExcepcionPersistencia{

        if(PersistenciaTarifa.insertarTarifa(tarifa1)!=1){
            throw new ExcepcionPersistencia("Error al insertar la tarifa");
        }
    }
    
     /**
     * Recibe los datoss necesarios y los manda a la Persistencia
     * @param codigo de la tarifa a modificar
     * @param nombre del campo a modificar
     * @param nuevo valor a insertar en la tarifa
     */
    public void actualizarTarifa(){

        if(PersistenciaTarifa.modificarTarifa(this)==1){
            System.out.println("Tarifa modificada correctamente");
        }
        else{
            System.out.println("Error al modificar la tarifa");
        }
    }
      
    public static Tarifa obtenerTarifa(int codtarifa){
        Tarifa t=PersistenciaTarifa.obtenerTarifa(codtarifa);
        return t;
    }
    
    
     /**
     * Carga una lista de tarifas existentes a partir de la Persistencia y las muestra
     * @return un entero con el numero de tarifas en la lista
     */
    public static int mostrarTarifas(){
       List<Tarifa> tari=PersistenciaTarifa.devolverTarifa();
        if(tari.isEmpty()){
            System.out.println("No hay ninguna tarifa");
        }
        Iterator it=tari.iterator();
        System.out.println("Hay "+ tari.size()+" tarifas");
        
            while(it.hasNext()){
               Tarifa t=(Tarifa)it.next();
               System.out.println(t);
            }
        return tari.size();
    }

}
